Given a non-negative integer num
, repeatedly add all its digits until the result has only one digit.
Input: 38 Output: 2 Explanation: The process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.
Could you do it without any loop/recursion in O(1) runtime?
implSolution{pubfnadd_digits(num:i32) -> i32{letmut num = num;while num >= 10{letmut tmp = 0;while num != 0{ tmp += num % 10; num /= 10;} num = tmp;} num }}
implSolution{pubfnadd_digits(num:i32) -> i32{(num - 1) % 9 + 1}}